﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BorisTheBlade
{
	/// <summary>
	/// Информация о собственных сделках на покупку/продажу.
	/// </summary>
	class WrapperStopOrders
	{
		private long m_OrderNo;
		/// <summary>
		/// Идентификационный номер заявки в торговой системе
		/// </summary>
		public long OrderNo {get {return m_OrderNo;} set {m_OrderNo=value;}}

		private DateTime m_OrderTime;
		/// <summary>
		/// Время регистрации заявки в торговой системе
		/// </summary>
		public DateTime OrderTime {get {return m_OrderTime;} set {m_OrderTime = value;}}

		private DateTime m_WithdrawTime;
		/// <summary>
		/// Время снятия (отмены) заявки в торговой системе
		/// </summary>
		public DateTime WithdrawTime {get {return m_WithdrawTime;} set {m_WithdrawTime = value;}}

		private string m_SecBoard;
		/// <summary>
		/// Код режима торгов для финансового инструмента
		/// </summary>
		public string SecBoard {get {return m_SecBoard;} set {m_SecBoard = value;}}

		private string m_SecCode;
		/// <summary>
		/// Код финансового инструмента
		/// </summary>
		public string SecCode {get {return m_SecCode;} set {m_SecCode = value;}}

		private string m_BuySell;
		/// <summary>
		/// Направленность заявки: "B" – покупка, "S" – продажа
		/// </summary>
		public string BuySell {get {return m_BuySell;} set {m_BuySell = value;}}

		private string m_MktLimit;
		/// <summary>
		/// Тип заявки: "M" – рыночная, "L" – лимитированная	
		/// </summary>
		public string MktLimit{get {return m_MktLimit;} set {m_MktLimit = value;}}

		private string m_SplitFlag;
		/// <summary>
		/// Признак расщепления цены: "S" – по разным ценам, "O" – по одной цене
		/// </summary>
		public string SplitFlag {get {return m_SplitFlag;} set {m_SplitFlag = value;}}

		private string m_ImmCancel;
		/// <summary>
		/// Условие исполнения: " " (пробел) – поставить в очередь, "N" – немедленно или отклонить, "W" – снять остаток
		/// </summary>
		public string ImmCancel {get {return m_ImmCancel;} set {m_ImmCancel = value;}}

		private string m_StopType;
		/// <summary>
		/// Тип стоп-завки: " " (пробел) – неактивная, "L" – Stop-Loss, "P" – Take-Profit
		/// </summary>
		public string StopType {get {return m_StopType;} set {m_StopType = value;}}

		private DateTime m_OrderEndTime;
		/// <summary>
		/// Время окончания действия активизированной стоп-заявки в торговой системе
		/// </summary>
		public DateTime OrderEndTime {get {return m_OrderEndTime;} set {m_OrderEndTime = value;}}

		private DateTime m_EndTime;
		/// <summary>
		/// Время окончания действия стоп-заявки в торговой системе
		/// </summary>
		public DateTime EndTime {get {return m_EndTime;} set {m_EndTime = value;}}

		private double m_AlertPrice;
		/// <summary>
		/// Цена, при достижении которой происходит активизация стоп-заявки
		/// </summary>
		public double AlertPrice {get {return m_AlertPrice;} set {m_AlertPrice = value;}}

		private double m_Price;
		/// <summary>
		/// Цена за одну ценную бумагу
		/// </summary>
		public double Price {get {return m_Price;} set {m_Price = value;}}

		private int m_Quantity;
		/// <summary>
		/// Количество ценных бумаг, выраженное в лотах
		/// </summary>
		public int Quantity {get {return m_Quantity;} set {m_Quantity = value;}}

		private double m_Yield;
		/// <summary>
		/// Доходность, рассчитанная по цене заявки
		/// </summary>
		public double Yield {get {return m_Yield;} set {m_Yield = value;}}

		private double m_AccruedInt;
		/// <summary>
		/// Накопленный купонный доход, рассчитанный для указанного в заявке количества ценных бумаг, выраженный в рублях
		/// </summary>
		public double AccruedInt {get {return m_AccruedInt;} set {m_AccruedInt = value;}}

		private string m_Status;
		/// <summary>
		/// Текущее состояние заявки:
		/// "A" – принята торговой системой, но пока не обновлена в таблице терминала,
		/// "O" – активная,
		/// "M" – исполнена,
		/// "W" – снята,
		/// "N" – отклонена контрагентом,
		/// "R" – отклонена торговой системой,
		/// "C" – снята торговой системой
		/// </summary>
		public string Status {get {return m_Status;} set {m_Status = value;}}

		private string m_BrokerRef;
		/// <summary>
		/// Ссылка типа [счет клиента]/[субсчет]
		/// </summary>
		public string BrokerRef {get {return m_BrokerRef;} set {m_BrokerRef = value;}}

		private string m_BrokerID;
		/// <summary>
		/// Код клиента
		/// </summary>
		public string BrokerID {get {return m_BrokerID;} set {m_BrokerID = value;}}

		private string m_Account;
		/// <summary>
		/// Торговый счет, в счет которого отправлена данная заявка
		/// </summary>
		public string Account {get {return m_Account;} set {m_Account = value;}}

		private string m_ExtRef;
		/// <summary>
		/// Поле-примечание, используемое для обратной связи с внешними системами
		/// </summary>
		public string ExtRef { get { return m_ExtRef; } set { m_ExtRef = value; } }

}
}
